class Expression {
  constructor(tag, left, right, operator, children, start, end) {
    this.tag = tag;
    this.left = left;
    this.right = right;
    this.operator = operator;
    this.children = children;
    this.startToken = start;
    this.endToken = end;
  }
}

class Operator {
  constructor(tag, params, operator, children, start, end) {
    this.tag = tag;
    this.params = params;
    this.operator = operator;
    this.children = children;
    this.startToken = start;
    this.endToken = end;
  }
}

class Literal {
  constructor(tag, value) {
    this.tag = tag;
    this.value = value;
  }
}

module.exports = {
  Expression,
  Operator,
  Literal
};
